<?php
/**
 * Author: Silent Night
 * email: silentwolf_wp@163.com
 * Date: 2017/10/16
 * Time: 10:54
 */

namespace app\admin\behavior;
use app\admin\model\Admin;
use think\Controller;
use think\Session;

/**
 * 权限检测类:检测操作权限
 * Class CheckPermissions
 * @package app\admin\behavior
 */
class CheckPermissions extends Controller{
    public function actionBegin(){
        // 获取当前控制器 访问操作
        $m = request()->module();
        $c = request()->controller();
        $a = request()->action();
        $url = "/".$m."/".$c."/".$a;
        // 1.获取配置  忽略权限 ignore数组
        $ignore_permission = config('ignore_permissions');
        // 判断当前访问的页面是否在忽略的权限里面
        if(in_array($url,$ignore_permission)){
            return true;
        }
        // 判断当前用户是否登录
        $session_id = Session::get('id');
        if(!empty($session_id)){
            // 获取当前登录用户关联的权限
            $adminModel = new Admin();
            $adminModels = $adminModel->getAdminPower($session_id);
            // 遍历权限数组  获取purl  $permissions
            $permission_urls = [];
            if(!empty($adminModels)){
                foreach ($adminModels as $permession){
                    $permission_urls[]=$permession['action'];
                }
            }
            // 判断当前url 是否存在$permissions中
            if(in_array($url,$permission_urls)){
                return true;
            }else{
                $this->error('对不起，您没有此权限，请联系管理员...',url('Admin/index'),'','3');
            }
        }else{
            $this->error('对不起，您还未登录！跳转页面登录中...',url('Login/login'),'','3');
        }
        return true;
    }
}